<template>
  <view style="background-color: #FFFFFF;">
    <view class="goods-list">
      <view v-for="(val,index) in goodsList" :key="index" @click="goToDetail(val)">
      <my-goods :val="val"></my-goods>
      </view>
    </view>
  </view>
</template>

<script>
  export default {
    "lazyCodeLoading": "requiredComponents",
  data(){
    return {
      // 请求参数对象
        queryObj: {
          // 查询关键词
          query: '',
          // 商品分类Id
          cid: '',
          // 页码值
          pagenum: 1,
          // 每页显示多少条数据
          pagesize: 10
        },
        goodsList:[] , //商品列表分类
        total:'', //总数
        isUnderway:false  //是否正在获取数据
    }
  },
  onLoad(options){
    // console.log(options)
    this.queryObj.cid = options.cid || ''
    this.queryObj.query = options.query || ''
    this.getGoodsList()},
  methods:{
   async getGoodsList(cd){
     // 打开 获取数据
     this.isUnderway = true
     // 发请求
      const {data:res} = await uni.$http.get('/api/public/v1/goods/search',this.queryObj)
     // console.log(cd)
      cd && cd()
      // 关闭
      this.isUnderway = false
      // 判断请求是否成功
      if(res.meta.status !==200) return uni.$showMsg
      // 赋值  通过展开运算符的形式，进行新旧数据的拼接
      this.goodsList = [...this.goodsList,...res.message.goods]
      this.total = res.message.total
      // console.log(res)
    },
    // 页面触底时间
    onReachBottom(){
      // 判断 当前页 乘以 每页条数 是否 大于 总条数  大于return出去
      if(this.queryObj.pagenum*this.queryObj.pagesize >this.total) return
      // 如果正在 获取数据中 return出去
      if(this.isUnderway) return
      // 页码自增加1
      this.queryObj.pagenum++
      // 重新渲染数据
      this. getGoodsList()
      },
      // 下拉刷新
      onPullDownRefresh(){
        // 重置数据
        this.queryObj.pagenum = 1
        this.total = ''
        this.goodsList = []
        this.isUnderway = false
        this.getGoodsList(() => uni.stopPullDownRefresh())
      },
      goToDetail(val) {
        uni.navigateTo({
          url:'/subpkg/goods-detail/goods-detail?goods_id='+val.goods_id
        })
      }
  }
  }

</script>

<style lang="scss">

</style>
